package com.aliwo.algorithm.easy;

/**
 * 回文数 正读和倒读都一样的数 注意：1.偶数个的数字也有回文数124421 2.小数没有回文数. 负数没有回文数
 * input 121
 * output true
 *
 * @author Xu Yayuan
 * @date 2022/3/9
 */
public class PalindromeNum {
    public static void main(String[] args) {

        int num = 1221;
        Boolean result = palindrome(num);
        System.out.println("4215634是否是回文数: " + result);

        int num1 = 12121;
        Boolean result1 = palindrome(num1);
        System.out.println("12121是否是回文数: " + result1);
    }

    public static Boolean palindrome(int num) {
        if (num < 0) { // 负数没有回文数
            return Boolean.FALSE;
        }
        int digit = (int) (Math.log(num) / Math.log(10) + 1); // 总位数
        int revert = 0;
        int pop = 0;

        for (int i = 0; i < digit / 2; i++) { // 前半部分倒置
            pop = num % 10;
            num /= 10;
            revert = revert * 10 + pop;
        }

        if (digit % 2 == 0 && num == revert) { // 总位数为偶数时
            return Boolean.TRUE;
        }

        if (digit % 2 != 0 && num / 10 == revert) { // 总位数为奇数时 num /10去掉一位
            return Boolean.TRUE;
        }

        return Boolean.FALSE;
    }

}
